from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import DatabaseConfig

# 引擎配置（带连接池）
engine = create_engine(
    DatabaseConfig.get_test_mysql_uri(),
    pool_size=5,
    max_overflow=10,
    echo=True,  # 开发阶段显示SQL日志
    pool_pre_ping=False  # 显式禁用
)

# 会话工厂:设置数据库操作需要手动提交，自动将对象的状态刷新到数据库
SessionLocal = sessionmaker(autocommit=False, autoflush=True, bind=engine)

def get_db():
    """生成数据库会话的生成器"""
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()
